package com.muyu.payment.mapper;

import java.util.List;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.muyu.payment.domain.PaymentDict;
import com.muyu.payment.domain.PaymentOrder;
import com.muyu.payment.domain.model.PaymentOrderPageQueryModel;
import com.muyu.payment.domain.model.PaymentOrderQueryModel;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

/**
 * 支付订单Mapper接口
 *
 * @author muyu
 * @date 2025-09-16
 */
@Mapper
public interface PaymentOrderMapper extends BaseMapper<PaymentOrder> {

    /**
     * 标记订单为已支付（幂等更新）
     * @param orderNo 订单号
     * @param thirdTradeNo 第三方交易号
     * @param payChannel 支付渠道
     * @return 更新行数
     */
    int markPaidIfPending(@Param("orderNo") String orderNo, @Param("thirdTradeNo") String thirdTradeNo, @Param("payChannel") String payChannel);

    /**
     * 标记订单为已支付（幂等更新，带支付类型）
     * @param orderNo 订单号
     * @param thirdTradeNo 第三方交易号
     * @param payChannel 支付渠道
     * @param payType 支付类型
     * @return 更新行数
     */
    int markPaidIfPending(@Param("orderNo") String orderNo, @Param("thirdTradeNo") String thirdTradeNo, @Param("payChannel") String payChannel, @Param("payType") Long payType);

    /**
     * 检查订单是否已支付
     * @param orderNo 订单号
     * @return 是否已支付
     */
    boolean isPaid(@Param("orderNo") String orderNo);

    /**
     * 字典表
     * @param dictType
     * @return
     */
    List<PaymentDict> dict(String dictType);


    /**
     * 支付订单分页列表
     * @param page 分页参数
     * @param queryModel 查询条件
     * @return
     */
    Page<PaymentOrderPageQueryModel> pageQuery(Page<PaymentOrderPageQueryModel> page, @Param("query") PaymentOrderQueryModel queryModel);

}
